# -*- encoding: utf-8 -*-
# testa_persistencia.py

import pygame,sys,os
import Tkinter
import tkMessageBox
import tkSimpleDialog
from pygame.locals import *
from Tkinter import *

pygame.init()

screen = pygame.display.set_mode((600,600))
pygame.display.set_caption('Recordes')

class Persistencia:                    
    def __init__(self,score):     
        self.nome_arquivo = 'recordes.txt'
        self.fonte1 = pygame.font.SysFont('Arial',20)    # escolher uma fonte que tenha na maioria dos sistemas
        self.cor1 = (0,0,255)     # letra do titulo
        self.cor2 = (255,0,0)    # texto dos recordes
        self.score = score
        self.background = pygame.image.load('Imagens' + os.sep + 'imagem_menu_def.jpg')

    def desenhar_imagem_recordes(self):
        arquivo = open(self.nome_arquivo,'r')
        conteudo = arquivo.readlines()
        arquivo.close()
        screen.blit(self.fonte1.render('RECORDES', True, self.cor1), (200,150))   # blita o titulo

        if not self.verificar_arquivo_vazio():
            mapa_nome_pontuacao = {}
            i = 1
            for linha in conteudo:
                linha = linha.split('|')                    
                mapa_nome_pontuacao[i] = (int(linha[1]),linha[0])
                i += 1

            pontuacoes_ordenadas = mapa_nome_pontuacao.values()
            pontuacoes_ordenadas.sort()   # lista de tuplas

            pontuacoes_ordenadas = pontuacoes_ordenadas[::-1]

            i = 200
            j = 200
            for tupla in pontuacoes_ordenadas[:8]:
                screen.blit(self.fonte1.render('%s    %d' % (tupla[1],int(tupla[0])), True, self.cor2),(i,j))    # return Surface
                j += 60

        else:
            print None
            return None
                
    def verificar_arquivo_vazio(self):
        arquivo = open(self.nome_arquivo,'r')
        conteudo = arquivo.read()
        if conteudo == '':
            return True
        return False

    def fazer_persistencia(self,nome,pontuacao):    # tem que garantir que ele vai digitar valor validos (no nome)
        arquivo = open(self.nome_arquivo,'a')   # para soh entao salvar
        arquivo.write('%s|%d\n' % (nome,pontuacao))  
        arquivo.close()
    
    def entrar_nome_usuario(self):
        root = Tk()
        root.withdraw()
         
        nome = tkSimpleDialog.askstring('%-100s' % 'Recordes','Digite seu nome')
        tkMessageBox.showinfo('%-100s' % 'Parabens!',nome)
        return nome


recordes = Persistencia(100)

while True:
    for e in pygame.event.get():   
        if e.type == QUIT:
            sys.exit(0)

    pygame.time.wait(500)

    nome = recordes.entrar_nome_usuario()

    recordes.fazer_persistencia(nome,recordes.score)

    screen.blit(recordes.background,(0,0))

    recordes.desenhar_imagem_recordes()

    pygame.display.update()
    
    break
